package com.dongzili.postgresql.common.aspect;

import java.time.LocalDateTime;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.IdType;
/**
* 接口访问日志表
* @author dongzili
*/
@Data
@TableName("api_access_log")
@DS("master")
public class ApiAccessLog {


    /**
    * 主键
    */
    @TableId(value="\"id\"", type = IdType.AUTO)
    private Long id;

    /**
     * 追踪ID
     */
    @TableField("\"traceId\"")
    private String traceId;

    /**
    * 标题
    */
    @TableField("\"title\"")
    private String title;

    /**
    * 请求URL
    */
    @TableField("\"request_url\"")
    private String requestUrl;

    /**
    * 请求方法(GET/POST等)
    */
    @TableField("\"request_method\"")
    private String requestMethod;

    /**
    * 请求参数(JSON格式)
    */
    @TableField("\"request_params\"")
    private String requestParams;

    /**
     * 返回体(JSON格式)
     */
    @TableField("\"response_data\"")
    private String responseData;

    /**
    * 客户端IP
    */
    @TableField("\"request_ip\"")
    private String requestIp;

    /**
    * 用户代理(浏览器/设备信息)
    */
    @TableField("\"user_agent\"")
    private String userAgent;

    /**
    * 响应状态码(200/404等)
    */
    @TableField("\"response_status\"")
    private Integer responseStatus;

    /**
    * 响应时间(毫秒)
    */
    @TableField("\"response_time\"")
    private Long responseTime;

    /**
    * 操作用户名(未登录为null)
    */
    @TableField("\"username\"")
    private String username;

    /**
    * 用户ID
    */
    @TableField("\"userId\"")
    private Integer userId;

    /**
    * 创建时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("createTime")
    @TableField("\"createTime\"")
    private LocalDateTime createTime;

    /**
    * 更新时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("modifyTime")
    @TableField("\"modifyTime\"")
    private LocalDateTime modifyTime;

    /**
    * 唯一键
    */
    @TableField(exist = false)
    private String uniqueKey;

}
